<link linkend="GtkVideo"><inlinegraphic fileref="video.png" format="PNG"></inlinegraphic></link>
<link linkend="GtkMediaControls"><inlinegraphic fileref="media-controls.png" format="PNG"></inlinegraphic></link>
<link linkend="GtkWindowControls"><inlinegraphic fileref="windowcontrols.png" format="PNG"></inlinegraphic></link>
+ <link linkend="GtkEmojiChooser"><inlinegraphic fileref="emojichooser.png" format="PNG"></inlinegraphic></link>
</para>
</section>
g_main_loop_unref (loop);
g_object_unref (paintable);
- gtk_window_destroy (GTK_WINDOW (widget));
+ gtk_window_destroy (GTK_WINDOW (gtk_widget_get_root (widget)));
return surface;
}
quit_cb (gpointer data)
{
*(gboolean *)data = TRUE;
+ g_main_context_wakeup (NULL);
return G_SOURCE_REMOVE;
}
char *filename;
cairo_surface_t *surface;
GdkPixbuf *pixbuf;
+ GtkWidget *widget;
info = node->data;
NULL);
}
+ if (info->snapshot_popover)
+ {
+ GtkWidget *button = gtk_window_get_child (GTK_WINDOW (info->window));
+
+ gtk_menu_button_popup (GTK_MENU_BUTTON (button));
+ widget = GTK_WIDGET (gtk_menu_button_get_popover (GTK_MENU_BUTTON (button)));
+ }
+ else
+ {
+ widget = info->window;
+ }
+
if (info->wait > 0)
{
gboolean quit = FALSE;
g_main_context_iteration (NULL, TRUE);
}
- surface = snapshot_widget (info->window);
+ surface = snapshot_widget (widget);
pixbuf = gdk_pixbuf_get_from_surface (surface, 0, 0,
cairo_image_surface_get_width (surface),
gtk_window_set_resizable (GTK_WINDOW (info->window), FALSE);
info->include_decorations = TRUE;
}
+ else if (GTK_IS_POPOVER (widget))
+ {
+ GtkWidget *button;
+
+ info->snapshot_popover = TRUE;
+ info->window = gtk_window_new ();
+ gtk_window_set_decorated (GTK_WINDOW (info->window), FALSE);
+ info->include_decorations = TRUE;
+ button = gtk_menu_button_new ();
+ gtk_menu_button_set_popover (GTK_MENU_BUTTON (button), widget);
+ gtk_window_set_child (GTK_WINDOW (info->window), button);
+ }
else
{
info->window = gtk_window_new ();
gtk_widget_set_size_request (info->window, 240, 240);
break;
default:
- break;
+ break;
}
return info;
return new_widget_info ("calendar", vbox, MEDIUM);
}
+static WidgetInfo *
+create_emojichooser (void)
+{
+ GtkWidget *widget;
+ WidgetInfo *info;
+
+ widget = gtk_emoji_chooser_new ();
+ g_object_set (widget, "autohide", FALSE, NULL);
+
+ info = new_widget_info ("emojichooser", widget, ASIS);
+ info->wait = 2000;
+
+ return info;
+}
+
GList *
get_all_widgets (void)
{
retval = g_list_prepend (retval, create_drop_down ());
retval = g_list_prepend (retval, create_window_controls ());
retval = g_list_prepend (retval, create_calendar ());
+ retval = g_list_prepend (retval, create_emojichooser ());
return retval;
}